/***************************************************************************//**
 * @file     csa37f7x_gpio.h
 * @version  V1.0.0
 * @author   Chipsea MCU Group
 * @date     2020-10-23 PM
 * @brief    该文件包含了GPIO各功能参数的定义和函数接口声明
 * 
 * @copyright Copyright (C) 2020 Chipsea Technologies Corp. All rights reserved.
 ****************************************************************************
* @attention
 *	硬件平台: CSA37F70 评估板V1.0 \n
 *	SDK版本：  CSA37F7X_SDK_1.0.0
 * 
 * @par 修改日志:
 * <table>
 * <tr><th>Date 	   <th>Version	<th>Author	            <th>Description
 * <tr><td>2020/10/21  <td>1.0.0    <td>Chipsea MCU Group	<td>创建初始版本
 * </table>
 *
 *****************************************************************************/

#ifndef __CSA37F7X_GPIO_H__
#define __CSA37F7X_GPIO_H__

// Include external header file.
#include "csa37f7x.h"

#ifdef __cplusplus
extern "C" {
#endif

/** @addtogroup GPIO 通用 I/O(GPIO)
  CSA37FX70 最多有 18 个通用 I/O 引脚，12 个 PA+6 个 PB。每个引脚的 I/O 类型可由软件独立地
配置为输入，输出，备选功能。<br>
###特性:
    - I/O 模式: \n
        PA/PB 输入模式带高阻\n
        PA 为纯开漏输出\n
        PB 支持推挽，伪开漏输出
    - PA/PB 均为 Schmitt 触发输入
    - PA 通信电平由代码选项配置字 CONFIG0 的 CPA_VTH_SEL 选择，可选 1.2V 和 1.8V
    - PB 通信电平由配置寄存器 PB_VTH_SEL 选择，可选 1.8V 和 VDD
    - PB 每个 I/O 可配置为上拉
  @{
*/


/**@brief  GPIOA引脚编号
* 
*/
#define GPIOA_PIN_NUM_0             0
#define GPIOA_PIN_NUM_1             1
#define GPIOA_PIN_NUM_2             2
#define GPIOA_PIN_NUM_3             3
#define GPIOA_PIN_NUM_4             4
#define GPIOA_PIN_NUM_5             5
#define GPIOA_PIN_NUM_6             6
#define GPIOA_PIN_NUM_7             7
#define GPIOA_PIN_NUM_8             8
#define GPIOA_PIN_NUM_9             9
#define GPIOA_PIN_NUM_10            10
#define GPIOA_PIN_NUM_11            11


/**
* @brief  GPIOB引脚编号
*/
#define GPIOB_PIN_NUM_0             0
#define GPIOB_PIN_NUM_1             1
#define GPIOB_PIN_NUM_2             2
#define GPIOB_PIN_NUM_3             3
#define GPIOB_PIN_NUM_4             4
#define GPIOB_PIN_NUM_5             5


/**@brief  GPIOA引脚定义
* 
*/
#define GPIO_PA0 0x0001
#define GPIO_PA1 0x0002
#define GPIO_PA2 0x0004
#define GPIO_PA3 0x0008
#define GPIO_PA4 0x0010
#define GPIO_PA5 0x0020
#define GPIO_PA6 0x0040
#define GPIO_PA7 0x0080
#define GPIO_PA8 0x0100
#define GPIO_PA9 0x0200
#define GPIO_PA10 0x0400
#define GPIO_PA11 0x0800
#define GPIO_PA12 0x1000 

/**
* @brief  GPIOB引脚定义
*/
#define GPIO_PB0 0x0001
#define GPIO_PB1 0x0002
#define GPIO_PB2 0x0004
#define GPIO_PB3 0x0008
#define GPIO_PB4 0x0010
#define GPIO_PB5 0x0020
#define GPIO_PB6 0x0040


#define HIGH_LEVEL 1
#define LOW_LEVEL 0

/**
* @brief  GPIO工作模式
*/
typedef enum
{
	GPIO_MODE_INPUT = 0x00,				/*!<GPIO输入模式 */	
	GPIO_MODE_OUTPUT_PUSHPULL = 0x01,	/*!<GPIO推挽输出模式 */	
	GPIO_MODE_OUTPUT_OPENDRAIN= 0x02,	/*!<GPIO开漏输出模式 */	
}gpio_mode_t;

/**
* @brief  GPIO模拟输入电阻选择
*/
typedef enum
{
	RES_LEVEL_3K = 0x00,  	/*!<GPIO模拟输入电阻3K欧姆 */	
	RES_LEVEL_5K = 0x01,	/*!<GPIO模拟输入电阻5K欧姆 */	
	RES_LEVEL_7K5 = 0x02,	/*!<GPIO模拟输入电阻7.5K欧姆 */	
	RES_LEVEL_11K = 0x03,	/*!<GPIO模拟输入电阻11K欧姆 */	
	RES_LEVEL_16K = 0x04,	/*!<GPIO模拟输入电阻16K欧姆 */	
	RES_LEVEL_20K = 0x05,	/*!<GPIO模拟输入电阻20K欧姆 */	
	RES_LEVEL_25K = 0x06,	/*!<GPIO模拟输入电阻25K欧姆 */	
	RES_LEVEL_30K = 0x07,	/*!<GPIO模拟输入电阻30K欧姆 */	
}gpio_analog_res_level_t;

/**
* @brief  GPIO模拟输入N/P MOS管选择
*/
typedef enum
{
	ANALOG_N = 0x00,  	/*!<GPIO模拟输入NMOS管 */	
	ANALOG_P = 0x01,	/*!<GPIO模拟输入PMOS管 */	
}gpio_analog_np_select_t;

/**
* @brief  GPIO分组
*/
typedef enum
{
	GPIO_GROUP_A = 0x00,  			/*!<GPIOA */	
	GPIO_GROUP_B = !GPIO_GROUP_A,	/*!<GPIOB */
}gpio_group_t;

/**
* @brief  GPIO中断触发方式选择
*/
typedef enum
{
	GPIO_INTMODE_EDGE = 0x00,		/*!<GPIO边沿触发中断 */
	GPIO_INTMODE_LEVEL = 0x01,		/*!<GPIO电平触发中断 */
}gpio_int_mode_t;


/**
* @brief  GPIO模拟输入通道结构体定义
*/
typedef struct
{
	gpio_analog_res_level_t analog_pull_res_level_n;	/*!<GPIO模拟输入NMOS管电阻值 */
	gpio_analog_res_level_t analog_pull_res_level_p;	/*!<GPIO模拟输入PMOS管电阻值 */
	enable_state_t  analog_pull_enable_n;				/*!<GPIO模拟输入NMOS管电阻上拉使能状态 */
	enable_state_t  analog_pull_enable_p;				/*!<GPIO模拟输入PMOS管电阻上拉使能状态 */
}gpio_analog_pull_config_t;

/**
* @brief  GPIOB通信阈值定义
*/
typedef enum
{
	GPIO_SMITT_LEVEL_18V = 0x01,	/*!<GPIOB 1.8V通信阈值 */
	GPIO_SMITT_LEVEL_VDD = 0x00,	/*!<GPIOB VDD通信阈值 */
}gpio_smitt_level_t;


/**
* @brief  宏定义检查GPIO分组
*/
#define GPIO_GROUP_CHECK(value)				(((value) == GPIO_GROUP_A)||\
											((value) == GPIO_GROUP_B))

/**
* @brief  宏定义检查GPIO分组
*/
#define GPIO_MODE_CHECK(value)				(((value) == GPIO_MODE_INPUT)||\
											 ((value) == GPIO_MODE_OUTPUT_PUSHPULL)||\
											((value) == GPIO_MODE_OUTPUT_OPENDRAIN))
/**
* @brief  宏定义检查GPIOB引脚
*/
#define GPIOB_PIN_CHECK(value)				(((value) == GPIO_PB0)||\
											((value) == GPIO_PB1)||\
											((value) == GPIO_PB2)||\
											((value) == GPIO_PB3)||\
											((value) == GPIO_PB4)||\
											((value) == GPIO_PB5))

/**
* @brief  宏定义检查GPIOA引脚
*/
#define GPIOA_PIN_CHECK(value)				(((value) == GPIO_PA0)||\
											((value) == GPIO_PA1)||\
											((value) == GPIO_PA2)||\
											((value) == GPIO_PA3)||\
											((value) == GPIO_PA4)||\
											((value) == GPIO_PA5)||\
											((value) == GPIO_PA6)||\
											((value) == GPIO_PA7)||\
											((value) == GPIO_PA8)||\
											((value) == GPIO_PA9)||\
											((value) == GPIO_PA10)||\
											((value) == GPIO_PA11)||\
											((value) == GPIO_PA12))


/**
* @brief  宏定义检查GPIO引脚中断触发方式
*/
#define GPIO_INT_IMD_CHECK(value)			(((value) == GPIO_INTMODE_EDGE)||\
											((value) == GPIO_INTMODE_LEVEL))

/**
* @brief  宏定义检查GPIOA外部模拟输入上拉电阻档位配置
*/
#define GPIO_ANALOG_RES_LEVEL_CHECK(value)	(((value) == RES_LEVEL_3K)||\
											 ((value) == RES_LEVEL_5K)||\
											 ((value) == RES_LEVEL_7K5)||\
											 ((value) == RES_LEVEL_11K)||\
											 ((value) == RES_LEVEL_16K)||\
											 ((value) == RES_LEVEL_20K)||\
											 ((value) == RES_LEVEL_25K)||\
											 ((value) == RES_LEVEL_30K))

/**
* @brief  宏定义检查GPIOA外部模拟输入上拉使能MOS管
*/
#define GPIO_ANALOG_NP_SELECT_CHECK(value)	(((value) == ANALOG_N)||\
											((value) == ANALOG_P))

/**
* @brief  宏定义检查GPIOB通道阈值
*/
#define GPIOB_SMITT_LEVEL_CHECK(value)		(((value) == GPIO_SMITT_LEVEL_18V)||\
											((value) == GPIO_SMITT_LEVEL_VDD))

/**@brief		GPIO功能初始化
 *
 * @param	    无
 * @return		无
*/
void gpio_def_init (void);

/**@brief		GPIO模式设置
 *
 * @param[in]	gpio_group_num		GPIO分组选择，GPIOA/GPIOB
 * @param[in]	gpio_mode		    GPIO模式选择
 * @param[in]	pin		            GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_mode_set(gpio_group_t gpio_group_num , gpio_mode_t  gpio_mode, uint16_t pin);

/**@brief		GPIO工作模式获取
 *
 * @param[in]	gpio_group_num		GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin		            GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		返回GPIO工作模式
*/
gpio_mode_t gpio_mode_get(gpio_group_t gpio_group_num,uint8_t pin_num);

/**@brief		GPIOB上拉使能
 *
 * @param[in]	pin			GPIOB引脚选择,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_pullup_enable(uint16_t pin);

/**@brief		GPIOB上拉禁用
 *
 * @param[in]	pin			GPIOB引脚选择,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_pullup_disable(uint16_t pin);

/**@brief		GPIOB上拉状态获取
 *
 * @param[in]	无
 * @return		返回GPIOB的上拉状态，其中BIT0~BIT5表示GPIOB0~GPIOB5引脚的上拉状态
*/
uint16_t gpio_pullup_state_get(void);

/**@brief		GPIO数字输入通道使能
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin		            GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_digital_input_enable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO数字输入通道禁用
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin		            GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_digital_input_disable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO数字输入通道状态查询
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @return		无
*/
uint16_t gpio_digital_input_state_get (gpio_group_t gpio_group_num);

/**@brief		GPIO引脚输出写屏蔽使能
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin		            GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_pin_mask_enable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO引脚输出写屏蔽禁用
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin		            GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_pin_mask_disable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO引脚输出写屏蔽状态查询
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @return		无
*/
uint16_t gpio_pin_mask_get (gpio_group_t gpio_group_num);


/**@brief		GPIO单个引脚输入值查询
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num			GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		返回查询的GPIO单个引脚输入值
*/
uint8_t gpio_input_data_bit_get(gpio_group_t gpio_group_num, uint8_t pin_num);


/**@brief		GPIO组引脚输入值查询
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @return		返回GPIO组引脚输入值
*/
uint32_t gpio_input_data_get(gpio_group_t gpio_group_num);

/**@brief		GPIO引脚数字输出值配置
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	value 	GPIO引脚选择，GPIO_PA0-11,GPIO_PB0-GPIO_PB5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_output_data_set(gpio_group_t gpio_group_num, uint16_t value);

/**@brief		GPIO引脚数字输出值获取
 *
 * @param[in]	gpio_group_num 	GPIO分组选择，GPIOA/GPIOB
 * @return		返回GPIO引脚的数字输出值
*/
uint32_t gpio_output_data_get(gpio_group_t gpio_group_num);

/**@brief		GPIO单个引脚高低电平配置
 *
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num			GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @param[in]	value			HIGH_LEVEL:高电平，LOW_LEVEL：低电平
 * @return		无
*/
void gpio_pin_bit_set(gpio_group_t gpio_group_num, uint8_t pin_num,uint8_t value);

/**@brief		GPIO单个引脚电平获取
 *
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		返回GPIO单个引脚电平值
*/
uint8_t gpio_pin_bit_get(gpio_group_t gpio_group_num,uint8_t pin_num);

/**@brief		GPIO中断触发配置
 *
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @param[in]	gpio_imd 		GPIO引脚中断触发方式
 * @return		返回GPIO单个引脚电平值
*/
void gpio_interrupt_trigger_set (gpio_group_t gpio_group_num, uint8_t pin_num, gpio_int_mode_t gpio_imd);

	
/**@brief		GPIO中断输入高电平触发使能
 *
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_interrupt_high_enable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO中断输入低电平触发使能
*
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_interrupt_low_enable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO中断输入高电平触发禁止
 *
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_interrupt_high_disable (gpio_group_t gpio_group_num, uint16_t pin);


/**@brief		GPIO中断输入低电平触发禁止
 *
 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_interrupt_low_disable (gpio_group_t gpio_group_num, uint16_t pin);

/**@brief		GPIO中断触发源状态查询

 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @return		返回GPIO中断触发源状态
 				1：有中断
 				0：没有中断
*/
uint16_t gpio_interrupt_state_get (gpio_group_t gpio_group_num);


/**@brief		GPIO中断状态清除

 * @param[in]	gpio_group_num	GPIO分组选择，GPIOA/GPIOB
 * @param[in]	pin_num 		GPIO引脚选择，GPIOA_PIN_NUM_0-11,GPIOB_PIN_NUM_0-5
 *				注：CSA37F71的GPIO_PA[9:8]为保留位,GPIO_PB[3:2]为保留位,不可配
 * @return		无
*/
void gpio_interrupt_state_clear (gpio_group_t gpio_group_num ,uint16_t pin);

/**@brief		GPIOA外部模拟输入通道上拉电阻配置

 * @param[in]	res_level_t		外部模拟输入上拉电阻档位配置
 * @param[in]	gpio_chn_num 	GPIOA外部模拟输入通道选择，取值范围0~17
 * @param[in]	analog_port 	外部模拟输入对应N/P管选择
 * @return		无
*/
void gpio_analog_pullup_level (gpio_analog_res_level_t res_level_t, uint8_t gpio_chn_num, gpio_analog_np_select_t analog_port);

/**@brief		GPIOA外部模拟输入通道下拉电阻配置

 * @param[in]	res_level_t		外部模拟输入下拉电阻档位配置
 * @param[in]	gpio_chn_num 	GPIOA外部模拟输入通道选择，取值范围0~17
 * @param[in]	analog_port 	外部模拟输入对应N/P管选择
 * @return		无
*/
void gpio_analog_pulldown_level (gpio_analog_res_level_t res_level_t, uint8_t gpio_chn_num, gpio_analog_np_select_t analog_port);

/**@brief		GPIOA外部模拟输入通道上拉电阻使能

 * @param[in]	gpio_chn_num	GPIOA外部模拟输入通道选择，取值范围0~17
 * @param[in]	analog_port 	外部模拟输入对应N/P管选择
 * @return		无
*/
void gpio_analog_pullup_enable (uint8_t gpio_chn_num, gpio_analog_np_select_t analog_port);

/**@brief		GPIOA外部模拟输入通道上拉电阻禁用

 * @param[in]	gpio_chn_num	GPIOA外部模拟输入通道选择，取值范围0~17
 * @param[in]	analog_port 	外部模拟输入对应N/P管选择
 * @return		无
*/
void gpio_analog_pullup_disable (uint8_t gpio_chn_num, gpio_analog_np_select_t analog_port);

/**@brief		GPIOA外部模拟输入通道下拉电阻使能

 * @param[in]	gpio_chn_num	GPIOA外部模拟输入通道选择，取值范围0~17
 * @param[in]	analog_port 	外部模拟输入对应N/P管选择
 * @return		无
*/
void gpio_analog_pulldown_enable (uint8_t gpio_chn_num, gpio_analog_np_select_t analog_port);

	
/**@brief		GPIOA外部模拟输入通道下拉电阻禁用

 * @param[in]	gpio_chn_num	GPIOA外部模拟输入通道选择，取值范围0~17
 * @param[in]	analog_port 	外部模拟输入对应N/P管选择
 * @return		无
*/
void gpio_analog_pulldown_disable (uint8_t gpio_chn_num, gpio_analog_np_select_t analog_port);

/**@brief		GPIOA外部模拟输入通道上拉配置查询

 * @param[out]	config_reg		GPIOA外部模拟输入通道配置结构体
 * @param[in]	gpio_chn_num	GPIOA外部模拟输入通道选择，取值范围0~17
 * @return		无
*/
void gpio_analog_pullpu_config_get (gpio_analog_pull_config_t* config_reg , uint8_t gpio_chn_num);

		
/**@brief		GPIOA外部模拟输入通道下拉配置查询

 * @param[out]	config_reg		GPIOA外部模拟输入通道配置结构体
 * @param[in]	gpio_chn_num	GPIOA外部模拟输入通道选择，取值范围0~17
 * @return		无
*/
void gpio_analog_pullpd_config_get (gpio_analog_pull_config_t* config_reg , uint8_t gpio_chn_num);

/**@brief		GPIOB单个引脚通信阈值选择

 * @param[in]	pin_num		GPIO引脚选择，GPIOB_PIN_NUM_0-5
 *				注：CSA37F71 GPIO_PB[3:2]为保留位,不可配
 * @param[in]	smitt_level	GPIOB通信阈值配置
 * @return		无
*/
void gpio_smitt_config_set(uint8_t pin_num, gpio_smitt_level_t smitt_level);

/**@brief		GPIOB单个引脚通信阈值查询

 * @param[in]	pin_num 	GPIO引脚选择，GPIOB_PIN_NUM_0-5
 *				注：CSA37F71 GPIO_PB[3:2]为保留位,不可配
 * @return		返回GPIOB单个引脚通信阈值查询结果
*/
gpio_smitt_level_t gpio_smitt_config_get(uint8_t pin_num);



/*@}*/ /* end of group GPIO */


#ifdef __cplusplus
}
#endif

#endif  //__CSA37F7X_GPIO_H__


/*** (C) COPYRIGHT 2020 Chipsea Technologies (Shenzhen) Corp. ***/
